<?php
    class GraficosController extends AppController {
        var $name = 'Graficos';
        var $uses = array('Grafico');
        var $helpers = array('Javascript');
        var $components = array();

        function getGraficos($idPaciente){

            $this->loadModel('Paciente');
            $this->Paciente->id = $idPaciente;
            $sexo = $this->Paciente->field('sexo');

            $result = $this->Grafico->find("all", array(
                "conditions" => array(
                    "OR" => array("Grafico.sexo" => $sexo, "Grafico.sexo IS NULL")
                )
            ));

            $this->set("result", $result);

            $this->render("/elements/ajax_return", "ajax");
            
        }

        function tallaEdadM($idPaciente){
            $grafico = $this->Grafico->getGrafico("1");

            $this->loadModel("Evaluacion");

            $minEdad = $grafico["Grafico"]["minimo_x"];
            $maxEdad = $grafico["Grafico"]["maximo_x"];

            $valores = $this->Evaluacion->find(
                "all", array(
                    "fields" => array("CONCAT(Evaluacion.talla, '') as valor_y", "DATEDIFF(Evaluacion.fecha, Paciente.fecha_nacimiento) / 365.25 AS valor_x"),
                    "conditions" => array("Evaluacion.paciente_id" => $idPaciente),
                    "group" => 'Evaluacion.id HAVING valor_x BETWEEN '.$minEdad." AND ".$maxEdad
                )
            );
            
            $this->set("grafico", $grafico["Grafico"]);
            $this->set("valores", $valores);

            $this->render("grafico", "ajax");
        }

        function pesoEdadM($idPaciente){
            $grafico = $this->Grafico->getGrafico("2");

            $this->loadModel("Evaluacion");

            $minEdad = $grafico["Grafico"]["minimo_x"];
            $maxEdad = $grafico["Grafico"]["maximo_x"];

            $valores = $this->Evaluacion->find(
                "all", array(
                    "fields" => array("CONCAT(Evaluacion.peso, '') as valor_y", "DATEDIFF(Evaluacion.fecha, Paciente.fecha_nacimiento) / 365.25 AS valor_x"),
                    "conditions" => array("Evaluacion.paciente_id" => $idPaciente),
                    "group" => 'Evaluacion.id HAVING valor_x BETWEEN '.$minEdad." AND ".$maxEdad
                )
            );

            $this->set("grafico", $grafico["Grafico"]);
            $this->set("valores", $valores);

            $this->render("grafico", "ajax");
        }

        function imcEdadM($idPaciente){
            $grafico = $this->Grafico->getGrafico("3");

            $this->loadModel("Evaluacion");

            $minEdad = $grafico["Grafico"]["minimo_x"];
            $maxEdad = $grafico["Grafico"]["maximo_x"];

            $valores = $this->Evaluacion->find(
                "all", array(
                    "fields" => array("(Evaluacion.peso / ((Evaluacion.talla * 0.01) * (Evaluacion.talla * 0.01)) ) as valor_y", "DATEDIFF(Evaluacion.fecha, Paciente.fecha_nacimiento) / 365.25 AS valor_x"),
                    "conditions" => array("Evaluacion.paciente_id" => $idPaciente),
                    "group" => 'Evaluacion.id HAVING valor_x BETWEEN '.$minEdad." AND ".$maxEdad
                )
            );

            $this->set("grafico", $grafico["Grafico"]);
            $this->set("valores", $valores);

            $this->render("grafico", "ajax");
        }

        function tallaEdadF($idPaciente){
            $grafico = $this->Grafico->getGrafico("4");

            $this->loadModel("Evaluacion");

            $minEdad = $grafico["Grafico"]["minimo_x"];
            $maxEdad = $grafico["Grafico"]["maximo_x"];

            $valores = $this->Evaluacion->find(
                "all", array(
                    "fields" => array("CONCAT(Evaluacion.talla, '') as valor_y", "DATEDIFF(Evaluacion.fecha, Paciente.fecha_nacimiento) / 365.25 AS valor_x"),
                    "conditions" => array("Evaluacion.paciente_id" => $idPaciente),
                    "group" => 'Evaluacion.id HAVING valor_x BETWEEN '.$minEdad." AND ".$maxEdad
                )
            );

            $this->set("grafico", $grafico["Grafico"]);
            $this->set("valores", $valores);

            $this->render("grafico", "ajax");
        }

        function pesoEdadF($idPaciente){
            $grafico = $this->Grafico->getGrafico("5");

            $this->loadModel("Evaluacion");

            $minEdad = $grafico["Grafico"]["minimo_x"];
            $maxEdad = $grafico["Grafico"]["maximo_x"];

            $valores = $this->Evaluacion->find(
                "all", array(
                    "fields" => array("CONCAT(Evaluacion.peso, '') as valor_y", "DATEDIFF(Evaluacion.fecha, Paciente.fecha_nacimiento) / 365.25 AS valor_x"),
                    "conditions" => array("Evaluacion.paciente_id" => $idPaciente),
                    "group" => 'Evaluacion.id HAVING valor_x BETWEEN '.$minEdad." AND ".$maxEdad
                )
            );

            $this->set("grafico", $grafico["Grafico"]);
            $this->set("valores", $valores);

            $this->render("grafico", "ajax");
        }

        function imcEdadF($idPaciente){
            $grafico = $this->Grafico->getGrafico("6");

            $this->loadModel("Evaluacion");

            $minEdad = $grafico["Grafico"]["minimo_x"];
            $maxEdad = $grafico["Grafico"]["maximo_x"];

            $valores = $this->Evaluacion->find(
                "all", array(
                    "fields" => array("(Evaluacion.peso / ((Evaluacion.talla * 0.01) * (Evaluacion.talla * 0.01)) ) as valor_y", "DATEDIFF(Evaluacion.fecha, Paciente.fecha_nacimiento) / 365.25 AS valor_x"),
                    "conditions" => array("Evaluacion.paciente_id" => $idPaciente),
                    "group" => 'Evaluacion.id HAVING valor_x BETWEEN '.$minEdad." AND ".$maxEdad
                )
            );

            $this->set("grafico", $grafico["Grafico"]);
            $this->set("valores", $valores);

            $this->render("grafico", "ajax");
        }

        function descensoPeso($idPaciente){
            $grafico = $this->Grafico->getGrafico("7");

            $this->loadModel("Evaluacion");

            $valores = $this->Evaluacion->find(
                "all", array(
                    "fields" => array("Evaluacion.peso as valor_y", "Evaluacion.fecha AS valor_x"),
                    "conditions" => array("Evaluacion.paciente_id" => $idPaciente),
                    "order" => array("Evaluacion.fecha" => "asc")
            ));

            $pesoMinimo = $this->Evaluacion->field("peso", array("paciente_id" => $idPaciente), "peso asc");
            $pesoMaximo = $this->Evaluacion->field("peso", array("paciente_id" => $idPaciente), "peso desc");

            $this->set("pesoMinimo", $pesoMinimo);
            $this->set("pesoMaximo", $pesoMaximo);
            $this->set("grafico", $grafico["Grafico"]);
            $this->set("valores", $valores);

            $this->render("grafico_descenso", "ajax");
        }
    }
?>